package controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import pojo.Gg;
import service.GgService;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 公告控制器
 * 处理公告相关的HTTP请求
 */
@RestController
@CrossOrigin(origins = "*") // 允许跨域请求
@RequestMapping("/gg")
public class GgController {

    @Autowired
    private GgService ggService;

    /**
     * 新增公告（后台管理用）
     */
    @PostMapping("/add")
    public Map<String, Object> addGg(@RequestBody Gg gg) {
        int result = ggService.add(gg);
        return buildResult(result > 0, "新增公告成功", "新增公告失败");
    }

    /**
     * 查询所有已发布的公告（前台展示用）
     */
    @GetMapping("/published")
    public List<Gg> findPublished() {
        return ggService.findPublished();
    }

    /**
     * 查询所有公告（后台管理用）
     */
    @GetMapping("/all")
    public List<Gg> findAll() {
        return ggService.findAll();
    }

    /**
     * 根据ID查询公告
     */
    @GetMapping("/{id}")
    public Gg findById(@PathVariable Integer id) {
        return ggService.findById(id);
    }

    /**
     * 更新公告（后台管理用）
     */
    @PutMapping("/update")
    public Map<String, Object> updateGg(@RequestBody Gg gg) {
        int result = ggService.update(gg);
        return buildResult(result > 0, "更新公告成功", "更新公告失败");
    }

    /**
     * 删除公告（后台管理用，逻辑删除）
     */
    @DeleteMapping("/{id}")
    public Map<String, Object> deleteById(@PathVariable Integer id) {
        int result = ggService.delete(id);
        return buildResult(result > 0, "删除公告成功", "删除公告失败");
    }

    /**
     * 构建统一的返回结果
     */
    private Map<String, Object> buildResult(boolean success, String successMsg, String errorMsg) {
        Map<String, Object> result = new HashMap<>();
        result.put("success", success);
        result.put("message", success ? successMsg : errorMsg);
        return result;
    }
}